Parte 2:
Los siguientes ejercicios son utilizando su cluster multinodo creado con su imagen de docker:
En tu carpeta alumnos/ crea la carpeta tarea_3/parte_2 ¡en minúsculas!
El mapper.py , reducer.py y output.txt del conteo del # de registros por cicloestación
Se ejecutó el job con:
./bin/hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.4.jar \
-input /tarea3/ciclo_est_retiro_num_prueba.txt \
-output /tarea3/output \
-file /usr/local/hadoop/datos/mapper.py \
-mapper mapper.py \
-file /usr/local/hadoop/datos/reducer.py \
-reducer reducer.py
localhost:8088 seleccionando la opción Nodesnodos
localhost:8088 seleccionando la opción FINISHED para ver que los jobs corrieron existosamentejob concluido
output.txt
De acuerdo con stackoverflow se requieren dos mapreduce jobs para hacer un join de tres tablas. De esta manera incluimos el mapper y el reducer del primer y el segundo job.
El mapper.py , reducer.py y output.txt del join del lado del mapper
Hacemos el join lo hacemos en dos pasos, primero ejecutamos:
./bin/hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.4.jar \
-input /tarea3/flights.csv \
-input /tarea3/airports.csv \
-output /tarea3/output_join \
-file /usr/local/hadoop/datos/join_mapper.py \
-mapper join_mapper.py \
-file /usr/local/hadoop/datos/join_reducer.py \
-reducer join_reducer.py
localhost:8088 seleccionando la opción Nodesnodos
localhost:8088 seleccionando la opción FINISHED para ver que los jobs corrieron existosamentejob concluido
output.txt
El mapper.py , reducer.py y output.txt del join del lado del mapper
La salida del primer join la usamos como entrada del segundo join ejecutando:
./bin/hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.4.jar \
-input /tarea3/output_join/part-00000 \
-input /tarea3/airlines.csv \
-output /tarea3/output_join_reducer \
-file /usr/local/hadoop/datos/join_mapper_1.py \
-mapper join_mapper_1.py \
-file /usr/local/hadoop/datos/join_reducer_1.py \
-reducer join_reducer_1.py
localhost:8088 seleccionando la opción Nodesnodos
localhost:8088 seleccionando la opción FINISHED para ver que los jobs corrieron existosamentejob concluido
output.txt
En este blog encontramos que el mapper-side join requiere que se cargue a memoria la ‘tabla chica’ y el join lo realiza cada mapper. En este caso el reducer no hace nada.
En este caso solo juntamos dos tablas: flights y airports
El mapper.py , reducer.py y output.txt del join del lado del reducer
Ejecutamos:
./bin/hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.4.jar \
-input /tarea3/flights.csv \
-input /tarea3/airports.csv \
-output /tarea3/output_join_mapper \
-file /usr/local/hadoop/datos/join_mapper_0.py \
-mapper join_mapper_0.py \
-file /usr/local/hadoop/datos/join_reducer_0.py \
-reducer join_reducer_0.py
localhost:8088 seleccionando la opción Nodesnodos
localhost:8088 seleccionando la opción FINISHED para ver que los jobs corrieron existosamentejob concluido
output.txt
Se incluye el Dockerfile usado para generar los nodos
El rmd y html con el reporte que contiene el código del mapper.py, reducer.py, head del output.txt y las imágenes solicitadas de cada ejercicio
El dockerfile de su imágen